package online.hxstart.code.easy;

import java.util.LinkedList;
import java.util.List;

/**
 * @author huxing
 * @date 2018-12-10 16:37
 * @describe 求素数
 */
public class PrimeNumber {

    public static void main(String[] args) {
        System.out.println(test1(1, 10));
        System.out.println(test2(7, 56));
    }

    /**
     * @param i 起始位置
     * @param j 结束位置
     * @return 计算结果
     */
    private static List<Integer> test1(int i, int j) {
        List<Integer> list = new LinkedList<Integer>();
        for (; i <= j; i++) {
            if (isPrimeNumber(i)) {
                list.add(i);
            }
        }
        return list;
    }

    /**
     * @param i 起始位置
     * @param j 结束位置
     * @return 计算结果
     */
    private static List<Integer> test2(int i, int j) {
        List<Integer> list = new LinkedList<Integer>();
        int start = (i / 10 + 1) * 10 + 1;
        while (start <= j && start % 5 != 0) {
            if (isPrimeNumber(start)) {
                list.add(start);
            }
            start = start + 2;
        }
        return list;
    }

    /**
     * 判断n是不是质数
     *
     * @param n 数字
     * @return 判断结果
     */
    private static boolean isPrimeNumber(int n) {
        int num = 2;
        if (n == num) {
            return true;
        }
        for (int i = 2; i <= n / num; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
